home *** CD-ROM | disk | FTP | other *** search
/ CICA 1993 April / CICA MS Windows - April 1993.iso / unzipped / programr / makemdi2 / frame.h < prev    next >
C/C++ Source or Header  |  1992-11-25  |  7KB  |  193 lines

  1. #ifndef CLASS_FRAME
  2. #define CLASS_FRAME "MakeMDI_Frame"
  3. // ==========================================================Purpose 
  4. // FRAME.H - Top level application window. 
  5. // 
  6. // MAKEMDI adaptation of Windows 3.1 SDK MAKEAPP system. 
  7. // 
  8. // MDI application design based on Chapter 7 of     
  9. // "Windows 3: A Developer's Guide" by Jeffrey Richter. 
  10. // 
  11. // Adaptation developed with permission of the author by  
  12. // John F. Holliday, Technisoft Corporation 
  13. // Telephone: (515) 472-9803, CompuServe: 71271,634 
  14. //
  15. // [DMM]    25-Nov-1992: Fixed crashing on exit
  16. //            Also tabified file to tabsize of 4
  17. //
  18. //            David M. Miller, Business Visions, Inc.
  19. //            Telephone: (212) 747-6118
  20. //            CompuServe: 72676,327
  21. //            internet: dmiller@hera.sbi.com
  22. // ==========================================================Private 
  23.  
  24. // Window procedure 
  25.  
  26. LRESULT CALLBACK _export Frame_WndProc(HWND, UINT, WPARAM, LPARAM);
  27.  
  28.  
  29. // Default message handler 
  30.  
  31. #define Frame_DefProc    DefWindowProc
  32.  
  33.  
  34. // Instance data structure 
  35.  
  36. typedef struct tagFRAME {
  37.     HWND            hWnd;                // Instance window handle. 
  38.     HWND            hWndClient;            // Client window handle. 
  39.     HWND            hWndActiveMDIChild; // Active MDI child window. 
  40.     WORD            wNumSheets;            // Number of Sheet windows created. 
  41.     WORD            wNumCharts;            // Number of Chart windows created. 
  42.     HMENU            hMenu;                /* Menu used when no MDI children are
  43.                                            active. */
  44.     DLGPROC            fpProcRibbon;        // Ribbon dialog procedure address. 
  45.     HWND            hdlgRibbon;            // Ribbon modeless dialog box. 
  46.     BOOL            fStatusBarOn;        // Is the status bar showing? 
  47.     BOOL            fMDIChildIsMaximized;        /* Is the active child
  48.                                                    maximized? */
  49.     HWND            hWndMenuHelp;        /* Window that last received a
  50.                                            WM_MENUSELECT message. */
  51.     DWORD            dwMenuHelp;            /* Menu help code placed here by
  52.                                            hWndMenuHelp window. */
  53. }                FRAME;
  54.  
  55.  
  56. // Instance data pointer access functions 
  57.  
  58. #if defined(M_I86SM) || defined(M_I86MM)
  59. #define Frame_GetPtr(hWnd)            (FRAME*)GetWindowWord((hWnd), 0)
  60. #define Frame_SetPtr(hWnd, pfrm)    (FRAME*)SetWindowWord((hWnd), 0, (WORD)(pfrm))
  61. #else
  62. #define Frame_GetPtr(hWnd)            (FRAME*)GetWindowLong((hWnd), 0)
  63. #define Frame_SetPtr(hWnd, pfrm)    (FRAME*)SetWindowLong((hWnd), 0, (LONG)(pfrm))
  64. #endif
  65.  
  66. // Helper macros 
  67.  
  68. #define GETFRAME(hWnd)                ((HWND) (GetParent(GetParent(hWnd))))
  69.  
  70. // Frame message handler macros 
  71.  
  72. #define HANDLE_FW_MDICHILDDESTROY(hWnd, wParam, lParam, fn) \
  73.    ((fn)((hWnd)), 0)
  74. #define FORWARD_FW_MDICHILDDESTROY(hWnd, fn) \
  75.    (void)(fn)((hWnd), FW_MDICHILDDESTROY, 0, 0L)
  76.  
  77. #define HANDLE_FW_GETSTATBARRECT(hWnd, wParam, lParam, fn) \
  78.    ((fn)((hWnd), (LPRECT)(LPARAM)(lParam)), 0)
  79. #define FORWARD_FW_GETSTATBARRECT(hWnd, lpRect, fn) \
  80.    (void)(fn)((hWnd), FW_GETSTATBARRECT, 0, (LPARAM)(LPRECT)(lpRect))
  81.  
  82. #define HANDLE_FW_DRAWSTATUSDIVIDE(hWnd, wParam, lParam, fn) \
  83.    ((fn)((hWnd), (LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
  84. #define FORWARD_FW_DRAWSTATUSDIVIDE(hWnd, lps, fn) \
  85.    (void)(fn)((hWnd), FW_DRAWSTATUSDIVIDE, 0, (LPARAM)(LPPAINTSTRUCT)(lps))
  86.  
  87. #define HANDLE_FW_RESIZEMDICLIENT(hWnd, wParam, lParam, fn) \
  88.    ((fn)((hWnd)), 0)
  89. #define FORWARD_FW_RESIZEMDICLIENT(hWnd, fn) \
  90.    (void)(fn)((hWnd), FW_RESIZEMDICLIENT, 0, 0L)
  91.  
  92. #define HANDLE_FW_SETMENUHELP(hWnd, wParam, lParam, fn) \
  93.    ((fn)((hWnd),(HWND)(WPARAM)(wParam),(DWORD)(LPARAM)(lParam)), 0)
  94. #define FORWARD_FW_SETMENUHELP(hWnd, hWndMenuHelp, dwMenuHelp, fn) \
  95.    (void)(fn)((hWnd), FW_SETMENUHELP, (WPARAM)(HWND)(hWndMenuHelp), \
  96.    (LPARAM)(DWORD)(dwMenuHelp))
  97.  
  98. #define HANDLE_FW_GETMENUHELP(hWnd, wParam, lParam, fn) \
  99.    (LRESULT)(DWORD)((fn)(hWnd))
  100. #define FORWARD_FW_GETMENUHELP(hWnd, fn) \
  101.    (DWORD)(fn)((hWnd), FW_GETMENUHELP, 0, 0L)
  102.  
  103. // Application message handler macros 
  104.  
  105. #define HANDLE_AW_PAINTMENUHELP(hWnd, wParam, lParam, fn) \
  106.    ((fn)((hWnd),(LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
  107. #define FORWARD_AW_PAINTMENUHELP(hWnd, ps, fn) \
  108.    (void)(fn)((hWnd), AW_PAINTMENUHELP, 0, (LPARAM)(LPPAINTSTRUCT)(ps))
  109.  
  110. #define HANDLE_AC_PAINTSTATBAR(hWnd, wParam, lParam, fn) \
  111.    ((fn)((hWnd),(HDC)(WPARAM)(wParam),(LPPAINTSTRUCT)(LPARAM)(lParam)), 0)
  112. #define FORWARD_AC_PAINTSTATBAR(hWnd, hdc, ps, fn) \
  113.    (void)(fn)((hWnd), AC_PAINTSTATBAR, 0, (WPARAM)(HDC)(wParam), \
  114.    (LPARAM)(LPPAINTSTRUCT)(ps))
  115.  
  116.  
  117.  
  118.  
  119. // Message handler declarations 
  120.  
  121. BOOL            Frame_OnCreate(FRAME * pfrm, CREATESTRUCT FAR * lpCreateStruct);
  122. void            Frame_OnDestroy(FRAME * pfrm);
  123.  
  124. BOOL            Frame_OnQueryEndSession(FRAME * pfrm);
  125. void            Frame_OnEndSession(FRAME * pfrm, BOOL fEnding);
  126. void            Frame_OnClose(FRAME * pfrm);
  127.  
  128. void            Frame_OnSize(FRAME * pfrm, UINT state, int cx, int cy);
  129.  
  130. void            Frame_OnPaint(FRAME * pfrm);
  131. BOOL            Frame_OnEraseBkgnd(FRAME * pfrm, HDC hdc);
  132.  
  133. void            Frame_OnActivate(FRAME * pfrm, UINT state, HWND hWndActDeact, BOOL fMinimized);
  134. void            Frame_OnSetFocus(FRAME * pfrm, HWND hWndOldFocus);
  135. void            Frame_OnKillFocus(FRAME * pfrm, HWND hWndNewFocus);
  136.  
  137. void            Frame_OnKey(FRAME * pfrm, UINT vk, BOOL fDown, int cRepeat, UINT flags);
  138. void            Frame_OnChar(FRAME * pfrm, UINT ch, int cRepeat);
  139. void            Frame_OnMouseMove(FRAME * pfrm, int x, int y, UINT keyFlags);
  140. void            Frame_OnLButtonDown(FRAME * pfrm, BOOL fDoubleClick, int x, int y, UINT keyFlags);
  141. void            Frame_OnLButtonUp(FRAME * pfrm, int x, int y, UINT keyFlags);
  142.  
  143. void            Frame_OnInitMenu(FRAME * pfrm, HMENU hMenu);
  144. void            Frame_OnInitMenuPopup(FRAME * pfrm, HMENU hMenu, int item, BOOL fSystemMenu);
  145.  
  146. void            Frame_OnCommand(FRAME * pfrm, int id, HWND hWndCtl, UINT codeNotify);
  147.  
  148. void            Frame_OnSysCommand(FRAME * pfrm, WORD cmd, int x, int y);
  149. void            Frame_OnNclButtonDown(FRAME * pfrm, BOOL fDoubleClick, int x, int y, UINT codeHitTest);
  150. void            Frame_OnMenuSelect(FRAME * pfrm, HMENU hMenu, int item, HMENU hmenuPopup, UINT flags);
  151. void            Frame_OnEnterIdle(FRAME * pfrm, WORD source, HWND hWndSource);
  152.  
  153. void            Frame_OnMdiChildDestroy(FRAME * pfrm);
  154. void            Frame_OnGetStatBarRect(FRAME * pfrm, LPRECT lpRect);
  155. void            Frame_OnDrawStatusDivide(FRAME * pfrm, LPPAINTSTRUCT lpps);
  156. void            Frame_OnResizeMdiClient(FRAME * pfrm);
  157. void            Frame_OnSetMenuHelp(FRAME * pfrm, HWND hWndMenuHelp, DWORD dwMenuHelp);
  158. DWORD            Frame_OnGetMenuHelp(FRAME * pfrm);
  159. void            Frame_OnPaintMenuHelp(FRAME * pfrm, LPPAINTSTRUCT lpps);
  160.  
  161. // ===========================================================Public 
  162.  
  163. BOOL            Frame_Initialize(APP * papp);
  164. void            Frame_Terminate(APP * papp);
  165.  
  166. HWND            Frame_CreateWindow(LPCSTR lpszText,
  167.                                     int x,
  168.                                     int y,
  169.                                     int cx,
  170.                                     int cy,
  171.                                     HINSTANCE hinst);
  172.  
  173. void WINAPI        Frame_TileVertically(HWND hWndMDIClient);
  174. HWND WINAPI        Frame_CreateMDIChild(LPSTR szClassName,
  175.                                     LPSTR szWindowName,
  176.                                     DWORD dwStyle,
  177.                                     short x,
  178.                                     short y,
  179.                                     short nWidth,
  180.                                     short nHeight,
  181.                                     HWND hWndMDIClient,
  182.                                     HANDLE hInstance,
  183.                                     LPARAM lParam);
  184.  
  185.  
  186. void WINAPI        Frame_ChangeMDIMenu(HWND hWndFrame,
  187.                                     HWND hWndClient,
  188.                                     HMENU hMenuNew,
  189.                                     WORD wMenuID);
  190.  
  191. //--------------------------------------------------------------End 
  192. #endif                            // !CLASS_FRAME 
  193.